/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * frmAltadeClientes.java
 *
 * Created on 26/10/2011, 11:52:07 PM
 */

package Clientes;
import Beans.ClienteBean;
import Beans.EntidadBean;
import Beans.TelefonoBean;
import Blogic.ClienteBLogic;
import Blogic.EntidadBLogic;
import Blogic.TelefonoBLogic;
import Conexion.Conexion;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
/**
 *
 * @author orellana
 */
public class frmAltadeClientes extends javax.swing.JFrame {

    // Atributos de la Clase
    int tipoAccion=0;
    private frmRegistrarTelefono telefonos=null;
    private int telefonoSel=-1;
    private String idTelefono="";
    private String idCliente="";
    private Date fecha=new Date();
    // Para la Tabla de Sucursales
    private String colSuc []={"Nombre Sucursal","Tipo Tienda","idSucursal"};
    public DefaultTableModel modelSucursales=new DefaultTableModel(colSuc,0);
    // Para la Tabla de Telefonos
    private String colTel[]={"Tipo Telefono","Telefono","Extension","idTelefono"};
    public DefaultTableModel modelTelefonos=new DefaultTableModel(colTel,0);
    


    /** Creates new form frmAltadeClientes */
    public frmAltadeClientes(int tipo) {
        initComponents();
        // Posicion del formulario
        this.setLocationRelativeTo(null);
        // Definimos el Redimencionamiento
        this.setResizable(false);
        // Definimos cerrado de formulario
        this.setDefaultCloseOperation(HIDE_ON_CLOSE);
        // Definimos el Tamaño de las Columnas (Telefonos)
        getTablaListadoTelefonos();
        // Seteamos el Titulo del Formulario
        switch(tipo){
            // Alta de Cliente
            case 1:
                this.setTitle("Alta de Cliente");
                jtpCliente.setTitleAt(0,"Alta de Clientes");
                this.tipoAccion=1;
                break;

            // Modificacion de Cliente
            case 2:
                this.setTitle("Modificar Cliente");
                jtpCliente.setTitleAt(0,"Modificar Clientes");
                this.tipoAccion=2;
                break;

        }
        // Cargamos Estados
        obtEstados();
        // Cargamos los Tipos de Precio
    }

    // Metodos Publicos
    // Seteamos el Identificador del Cliente
    public void setIdCliente(String idCliente){
        this.idCliente=idCliente;
    }

    // Obtenemos los Datos del Cliente
    public void obtDatosCliente(){
        // Variables Locales
        Vector datoCliente=new Vector();
        ClienteBean sqlBean=new ClienteBean();
        ClienteBean detalleDatoCliente=new ClienteBean();
        EntidadBean sqlBeanEntidad=new EntidadBean();
        Vector datoEntidad=new Vector();
        TelefonoBean sqlBeanTelefono=new TelefonoBean();
        Vector datoTelefono=new Vector();

        // Datos Cliente
        // Seteamos los Datos
        sqlBean.setIdCliente(idCliente);
        // Realizamos la Consulta
        datoCliente=(new ClienteBLogic()).getDatosCliente(sqlBean);
        detalleDatoCliente=(ClienteBean) datoCliente.elementAt(0);
        // Vaciamos los Datos
        txtCodigoCliente.setText(detalleDatoCliente.getCodigoCliente());
        txtRazonSocial.setText(detalleDatoCliente.getRazonSocial());
        txtNombreCliente.setText(detalleDatoCliente.getNombreCliente());
        txtRfcCliente.setText(detalleDatoCliente.getRfc());
        txtDireccionCliente.setText(detalleDatoCliente.getDireccion());
        txtNumIntCte.setText(detalleDatoCliente.getNoInt());
        txtNumExtCte.setText(detalleDatoCliente.getNoExt());
        txtCpCliente.setText(detalleDatoCliente.getCodigoPostal());
        txtCorreoCliente.setText(detalleDatoCliente.getEmail());
        txtLimiteCreditoCliente.setText(detalleDatoCliente.getLimiteCredito());
        txtDiasCreditoCliente.setText(detalleDatoCliente.getDiasCredito());

        // Evaluamos los Dias de Credito
        if (detalleDatoCliente.getDiasCredito().equalsIgnoreCase("0")){
            txtDiasCreditoCliente.setText("0");
        }else{
            txtDiasCreditoCliente.setText(detalleDatoCliente.getDiasCredito());
        }

        // Evaluamos el Limite de Credito
        if (detalleDatoCliente.getLimiteCredito().equalsIgnoreCase("0")){
            txtLimiteCreditoCliente.setText("0.00");
        }else{
            txtLimiteCreditoCliente.setText(detalleDatoCliente.getLimiteCredito());
        }

        // Validamos la Fecha de Vencimiento
        if (detalleDatoCliente.getFechaVencimiento().equalsIgnoreCase("")){
            // Vaciamos la Fecha Actual
            fechaVencCliente.setDate(new Date());
        }else{
            fechaVencCliente.setDate(fecha);
        }

        // Obtenemos los Telefonos del Cliente
        // Seteamos los Datos
        sqlBeanTelefono.setIdTipoPersona("2");
        sqlBeanTelefono.setIdControl(detalleDatoCliente.getIdCliente());
        datoTelefono=(new TelefonoBLogic()).getDatosTelefonosRegistrados(sqlBeanTelefono);
        // Vaciamos los Datos
        for(int i=0;i<datoTelefono.size();i++){
            sqlBeanTelefono=(TelefonoBean) datoTelefono.elementAt(i);
            modelTelefonos.addRow(new Object[]{sqlBeanTelefono.getDescripcion(),sqlBeanTelefono.getTelefono(),sqlBeanTelefono.getExtension(),sqlBeanTelefono.getIdTelefono()});
        }

        // Obtenemos el Estado, Ciudad y Colonia
        // Seteamos los Datos
        sqlBeanEntidad.setIdEntidad(detalleDatoCliente.getIdEntidad());
        datoEntidad=(new EntidadBLogic()).getDescEstadoCiudadColonia(sqlBeanEntidad);
        sqlBeanEntidad=(EntidadBean) datoEntidad.elementAt(0);
        // Vaciamos los Datos
        jcbEstadoCliente.setSelectedItem(sqlBeanEntidad.getDescEstado());
        jcbCiudadCliente.setSelectedItem(sqlBeanEntidad.getDescCiudad());
        jcbColoniaCliente.setSelectedItem(sqlBeanEntidad.getDescAsentamiento());
    }

    // Metodos Privados
    // Obtene Tamaño Columnas Tabla (Telefonos)
    private void getTablaListadoTelefonos(){
        // Vaciamos el Modelo con los Datos
        tblTelefonoCliente.setModel(modelTelefonos);
        // Definimos el Tamaño de las Columnas
        // Tipo Telefono
        tblTelefonoCliente.getColumnModel().getColumn(0).setPreferredWidth(150);
        // Telefono
        tblTelefonoCliente.getColumnModel().getColumn(1).setPreferredWidth(100);
        // Extension
        tblTelefonoCliente.getColumnModel().getColumn(2).setPreferredWidth(80);
        // idTelefono
        tblTelefonoCliente.getColumnModel().getColumn(3).setMinWidth(0);
        tblTelefonoCliente.getColumnModel().getColumn(3).setMaxWidth(0);
    }

    // Obtenemos Estados
    private void obtEstados(){
        // Variables Locales
        EntidadBean sqlBean=new EntidadBean();
        Vector estados=new Vector();

        // Ejecutamos la Consulta
        estados=(new EntidadBLogic()).getEntidadEstados(sqlBean);
        // Agregamos el Valor por Default
        jcbEstadoCliente.addItem("Seleccione");
        // Vaciamos los Datos
        for (int i=0;i<estados.size();i++){
            EntidadBean datoEstados=new EntidadBean();
            datoEstados=(EntidadBean) estados.elementAt(i);
            // Agregamos los Datos
            jcbEstadoCliente.addItem(datoEstados.getDescEstado());
        }

        // Definimos la Accion del Combo
        jcbEstadoCliente.setActionCommand("cmbEstadoCliente");
        jcbEstadoCliente.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                // Accion jcbEstadoCliente
                if (ae.getActionCommand().equals("cmbEstadoCliente")){
                    // Obtenemos las Ciudades
                    obtCiudades();
                }
            }
        });
    }

    // Obtenemos Ciudades
    private void obtCiudades(){
        // Variables Locales
        EntidadBean sqlBean=new EntidadBean();
        Vector ciudades=new Vector();

        // Limpiamos jcbCiudadCliente
        jcbCiudadCliente.removeAllItems();
        // Ejecutamos la Consulta
        // Seteamos el Estado
        sqlBean.setDescEstado(jcbEstadoCliente.getSelectedItem().toString());
        ciudades=(new EntidadBLogic()).getEntidadCiudades(sqlBean);
        // Agregamos el Valor por Default
        jcbCiudadCliente.addItem("Seleccione");
        // Vaciamos los Datos
        for (int i=0;i<ciudades.size();i++){
            EntidadBean datoCiudades=new EntidadBean();
            datoCiudades=(EntidadBean) ciudades.elementAt(i);
            // Agregamos los Datos
            jcbCiudadCliente.addItem(datoCiudades.getDescCiudad());
        }

        // Definimos la Accion del Combo
        jcbCiudadCliente.setActionCommand("cmbCiudadProveedor");
        jcbCiudadCliente.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                // Accion jcbCiudadCliete
                if (ae.getActionCommand().equals("cmbCiudadProveedor")){
                    // Obtenemos las Colonias
                    obtColonias();
                }
            }
        });
    }

    // Obtenemos Colonias
    public void obtColonias(){
        // Variables Locales
        EntidadBean sqlBean=new EntidadBean();
        Vector colonias=new Vector();

        // Limpiamos jcbColoniaCliente
        jcbColoniaCliente.removeAllItems();
        // Ejecutamos la Consulta
        // Seteamos los Datos
        sqlBean.setDescCiudad(jcbCiudadCliente.getSelectedItem().toString());
        colonias=(new EntidadBLogic()).getEntidadColonias(sqlBean);
        // Agregamos Valor por Default
        jcbColoniaCliente.addItem("Seleccione");
        // Vaciamos los Datos
        for (int i=0;i<colonias.size();i++){
            EntidadBean datoColonias=new EntidadBean();
            datoColonias=(EntidadBean) colonias.elementAt(i);
            // Agregamos los Datos
            jcbColoniaCliente.addItem(datoColonias.getDescAsentamiento());
        }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jtpCliente = new javax.swing.JTabbedPane();
        jpnCliente = new javax.swing.JPanel();
        lblRazonSocialCliente = new javax.swing.JLabel();
        lblRfcCliente = new javax.swing.JLabel();
        lblDireccionCliente = new javax.swing.JLabel();
        lblNumIntCte = new javax.swing.JLabel();
        lblNumExtCte = new javax.swing.JLabel();
        lblCpCliente = new javax.swing.JLabel();
        lblColoniaCliente = new javax.swing.JLabel();
        jcbCiudadCliente = new javax.swing.JComboBox();
        lblCiudadCliente = new javax.swing.JLabel();
        jcbColoniaCliente = new javax.swing.JComboBox();
        lblEstadoCliente = new javax.swing.JLabel();
        lblCorreoCliente = new javax.swing.JLabel();
        lblDiasCreditoCliente = new javax.swing.JLabel();
        lblLimiteCreditoCliente = new javax.swing.JLabel();
        lblVenceCreditoCliente = new javax.swing.JLabel();
        jcbEstadoCliente = new javax.swing.JComboBox();
        lblSaldoCliente = new javax.swing.JLabel();
        txtSaldoCliente = new javax.swing.JTextField();
        jLabel18 = new javax.swing.JLabel();
        jLabel19 = new javax.swing.JLabel();
        jLabel20 = new javax.swing.JLabel();
        jLabel21 = new javax.swing.JLabel();
        jLabel22 = new javax.swing.JLabel();
        jLabel24 = new javax.swing.JLabel();
        jLabel26 = new javax.swing.JLabel();
        jLabel27 = new javax.swing.JLabel();
        jLabel28 = new javax.swing.JLabel();
        lblCodigoCliente = new javax.swing.JLabel();
        jLabel25 = new javax.swing.JLabel();
        lblNombreCliente = new javax.swing.JLabel();
        lblDatosCliente = new javax.swing.JLabel();
        txtCodigoCliente = new javax.swing.JTextField();
        txtRazonSocial = new javax.swing.JTextField();
        txtNombreCliente = new javax.swing.JTextField();
        txtRfcCliente = new javax.swing.JTextField();
        txtDireccionCliente = new javax.swing.JTextField();
        txtNumIntCte = new javax.swing.JTextField();
        txtNumExtCte = new javax.swing.JTextField();
        txtCpCliente = new javax.swing.JTextField();
        txtCorreoCliente = new javax.swing.JTextField();
        txtLimiteCreditoCliente = new javax.swing.JTextField();
        txtDiasCreditoCliente = new javax.swing.JTextField();
        fechaVencCliente = new com.toedter.calendar.JDateChooser();
        jLabel1 = new javax.swing.JLabel();
        jcbTipoPrecio = new javax.swing.JComboBox();
        jPanel2 = new javax.swing.JPanel();
        lblTelefonoCliente2 = new javax.swing.JLabel();
        btnAgregarTCliente1 = new javax.swing.JButton();
        btnEliminarTCliente1 = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblTelefonoCliente = new javax.swing.JTable();
        jtbAltadeCliente = new javax.swing.JToolBar();
        btnGuardarCliente = new javax.swing.JButton();
        btnCerrarCliente = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(sistemapegasso.SistemaPegassoApp.class).getContext().getResourceMap(frmAltadeClientes.class);
        setTitle(resourceMap.getString("Form.title")); // NOI18N
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        setName("Form"); // NOI18N
        setResizable(false);

        jtpCliente.setFont(resourceMap.getFont("jtpCliente.font")); // NOI18N
        jtpCliente.setName("jtpCliente"); // NOI18N

        jpnCliente.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        jpnCliente.setName("jpnCliente"); // NOI18N

        lblRazonSocialCliente.setFont(resourceMap.getFont("lblRazonSocialCliente.font")); // NOI18N
        lblRazonSocialCliente.setText(resourceMap.getString("lblRazonSocialCliente.text")); // NOI18N
        lblRazonSocialCliente.setName("lblRazonSocialCliente"); // NOI18N

        lblRfcCliente.setFont(resourceMap.getFont("lblRfcCliente.font")); // NOI18N
        lblRfcCliente.setText(resourceMap.getString("lblRfcCliente.text")); // NOI18N
        lblRfcCliente.setName("lblRfcCliente"); // NOI18N

        lblDireccionCliente.setFont(resourceMap.getFont("lblDireccionCliente.font")); // NOI18N
        lblDireccionCliente.setText(resourceMap.getString("lblDireccionCliente.text")); // NOI18N
        lblDireccionCliente.setName("lblDireccionCliente"); // NOI18N

        lblNumIntCte.setFont(resourceMap.getFont("lblNumIntCte.font")); // NOI18N
        lblNumIntCte.setText(resourceMap.getString("lblNumIntCte.text")); // NOI18N
        lblNumIntCte.setName("lblNumIntCte"); // NOI18N

        lblNumExtCte.setFont(resourceMap.getFont("lblNumExtCte.font")); // NOI18N
        lblNumExtCte.setText(resourceMap.getString("lblNumExtCte.text")); // NOI18N
        lblNumExtCte.setName("lblNumExtCte"); // NOI18N

        lblCpCliente.setFont(resourceMap.getFont("lblCpCliente.font")); // NOI18N
        lblCpCliente.setText(resourceMap.getString("lblCpCliente.text")); // NOI18N
        lblCpCliente.setName("lblCpCliente"); // NOI18N

        lblColoniaCliente.setFont(resourceMap.getFont("lblColoniaCliente.font")); // NOI18N
        lblColoniaCliente.setText(resourceMap.getString("lblColoniaCliente.text")); // NOI18N
        lblColoniaCliente.setName("lblColoniaCliente"); // NOI18N

        jcbCiudadCliente.setFont(resourceMap.getFont("jcbCiudadCliente.font")); // NOI18N
        jcbCiudadCliente.setName("jcbCiudadCliente"); // NOI18N
        jcbCiudadCliente.setPreferredSize(new java.awt.Dimension(80, 21));

        lblCiudadCliente.setFont(resourceMap.getFont("lblCiudadCliente.font")); // NOI18N
        lblCiudadCliente.setText(resourceMap.getString("lblCiudadCliente.text")); // NOI18N
        lblCiudadCliente.setName("lblCiudadCliente"); // NOI18N

        jcbColoniaCliente.setFont(resourceMap.getFont("jcbColoniaCliente.font")); // NOI18N
        jcbColoniaCliente.setName("jcbColoniaCliente"); // NOI18N
        jcbColoniaCliente.setPreferredSize(new java.awt.Dimension(80, 21));

        lblEstadoCliente.setFont(resourceMap.getFont("lblEstadoCliente.font")); // NOI18N
        lblEstadoCliente.setText(resourceMap.getString("lblEstadoCliente.text")); // NOI18N
        lblEstadoCliente.setName("lblEstadoCliente"); // NOI18N

        lblCorreoCliente.setFont(resourceMap.getFont("lblCorreoCliente.font")); // NOI18N
        lblCorreoCliente.setText(resourceMap.getString("lblCorreoCliente.text")); // NOI18N
        lblCorreoCliente.setName("lblCorreoCliente"); // NOI18N

        lblDiasCreditoCliente.setFont(resourceMap.getFont("lblDiasCreditoCliente.font")); // NOI18N
        lblDiasCreditoCliente.setText(resourceMap.getString("lblDiasCreditoCliente.text")); // NOI18N
        lblDiasCreditoCliente.setName("lblDiasCreditoCliente"); // NOI18N

        lblLimiteCreditoCliente.setFont(resourceMap.getFont("lblLimiteCreditoCliente.font")); // NOI18N
        lblLimiteCreditoCliente.setText(resourceMap.getString("lblLimiteCreditoCliente.text")); // NOI18N
        lblLimiteCreditoCliente.setName("lblLimiteCreditoCliente"); // NOI18N

        lblVenceCreditoCliente.setFont(resourceMap.getFont("lblVenceCreditoCliente.font")); // NOI18N
        lblVenceCreditoCliente.setText(resourceMap.getString("lblVenceCreditoCliente.text")); // NOI18N
        lblVenceCreditoCliente.setName("lblVenceCreditoCliente"); // NOI18N

        jcbEstadoCliente.setFont(resourceMap.getFont("jcbEstadoCliente.font")); // NOI18N
        jcbEstadoCliente.setName("jcbEstadoCliente"); // NOI18N
        jcbEstadoCliente.setPreferredSize(new java.awt.Dimension(80, 21));

        lblSaldoCliente.setFont(resourceMap.getFont("lblSaldoCliente.font")); // NOI18N
        lblSaldoCliente.setText(resourceMap.getString("lblSaldoCliente.text")); // NOI18N
        lblSaldoCliente.setName("lblSaldoCliente"); // NOI18N

        txtSaldoCliente.setFont(resourceMap.getFont("txtSaldoCliente.font")); // NOI18N
        txtSaldoCliente.setEnabled(false);
        txtSaldoCliente.setName("txtSaldoCliente"); // NOI18N

        jLabel18.setFont(resourceMap.getFont("jLabel18.font")); // NOI18N
        jLabel18.setForeground(resourceMap.getColor("jLabel18.foreground")); // NOI18N
        jLabel18.setText(resourceMap.getString("jLabel18.text")); // NOI18N
        jLabel18.setName("jLabel18"); // NOI18N

        jLabel19.setFont(resourceMap.getFont("jLabel19.font")); // NOI18N
        jLabel19.setForeground(resourceMap.getColor("jLabel19.foreground")); // NOI18N
        jLabel19.setText(resourceMap.getString("jLabel19.text")); // NOI18N
        jLabel19.setName("jLabel19"); // NOI18N

        jLabel20.setFont(resourceMap.getFont("jLabel20.font")); // NOI18N
        jLabel20.setForeground(resourceMap.getColor("jLabel20.foreground")); // NOI18N
        jLabel20.setText(resourceMap.getString("jLabel20.text")); // NOI18N
        jLabel20.setName("jLabel20"); // NOI18N

        jLabel21.setFont(resourceMap.getFont("jLabel21.font")); // NOI18N
        jLabel21.setForeground(resourceMap.getColor("jLabel21.foreground")); // NOI18N
        jLabel21.setText(resourceMap.getString("jLabel21.text")); // NOI18N
        jLabel21.setName("jLabel21"); // NOI18N

        jLabel22.setFont(resourceMap.getFont("jLabel22.font")); // NOI18N
        jLabel22.setForeground(resourceMap.getColor("jLabel22.foreground")); // NOI18N
        jLabel22.setText(resourceMap.getString("jLabel22.text")); // NOI18N
        jLabel22.setName("jLabel22"); // NOI18N

        jLabel24.setFont(resourceMap.getFont("jLabel24.font")); // NOI18N
        jLabel24.setForeground(resourceMap.getColor("jLabel24.foreground")); // NOI18N
        jLabel24.setText(resourceMap.getString("jLabel24.text")); // NOI18N
        jLabel24.setName("jLabel24"); // NOI18N

        jLabel26.setFont(resourceMap.getFont("jLabel26.font")); // NOI18N
        jLabel26.setForeground(resourceMap.getColor("jLabel26.foreground")); // NOI18N
        jLabel26.setText(resourceMap.getString("jLabel26.text")); // NOI18N
        jLabel26.setName("jLabel26"); // NOI18N

        jLabel27.setFont(resourceMap.getFont("jLabel27.font")); // NOI18N
        jLabel27.setForeground(resourceMap.getColor("jLabel27.foreground")); // NOI18N
        jLabel27.setText(resourceMap.getString("jLabel27.text")); // NOI18N
        jLabel27.setName("jLabel27"); // NOI18N

        jLabel28.setFont(resourceMap.getFont("jLabel28.font")); // NOI18N
        jLabel28.setForeground(resourceMap.getColor("jLabel28.foreground")); // NOI18N
        jLabel28.setText(resourceMap.getString("jLabel28.text")); // NOI18N
        jLabel28.setName("jLabel28"); // NOI18N

        lblCodigoCliente.setFont(resourceMap.getFont("lblCodigoCliente.font")); // NOI18N
        lblCodigoCliente.setText(resourceMap.getString("lblCodigoCliente.text")); // NOI18N
        lblCodigoCliente.setName("lblCodigoCliente"); // NOI18N

        jLabel25.setFont(resourceMap.getFont("jLabel25.font")); // NOI18N
        jLabel25.setForeground(resourceMap.getColor("jLabel25.foreground")); // NOI18N
        jLabel25.setText(resourceMap.getString("jLabel25.text")); // NOI18N
        jLabel25.setName("jLabel25"); // NOI18N

        lblNombreCliente.setFont(resourceMap.getFont("lblNombreCliente.font")); // NOI18N
        lblNombreCliente.setText(resourceMap.getString("lblNombreCliente.text")); // NOI18N
        lblNombreCliente.setName("lblNombreCliente"); // NOI18N

        lblDatosCliente.setBackground(resourceMap.getColor("lblDatosCliente.background")); // NOI18N
        lblDatosCliente.setFont(resourceMap.getFont("lblDatosCliente.font")); // NOI18N
        lblDatosCliente.setForeground(resourceMap.getColor("lblDatosCliente.foreground")); // NOI18N
        lblDatosCliente.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblDatosCliente.setText(resourceMap.getString("lblDatosCliente.text")); // NOI18N
        lblDatosCliente.setName("lblDatosCliente"); // NOI18N
        lblDatosCliente.setOpaque(true);

        txtCodigoCliente.setFont(resourceMap.getFont("txtCodigoCliente.font")); // NOI18N
        txtCodigoCliente.setText(resourceMap.getString("txtCodigoCliente.text")); // NOI18N
        txtCodigoCliente.setName("txtCodigoCliente"); // NOI18N
        txtCodigoCliente.setPreferredSize(new java.awt.Dimension(6, 21));
        txtCodigoCliente.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtCodigoClienteFocusLost(evt);
            }
        });

        txtRazonSocial.setFont(resourceMap.getFont("txtRazonSocial.font")); // NOI18N
        txtRazonSocial.setText(resourceMap.getString("txtRazonSocial.text")); // NOI18N
        txtRazonSocial.setName("txtRazonSocial"); // NOI18N
        txtRazonSocial.setPreferredSize(new java.awt.Dimension(6, 21));
        txtRazonSocial.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtRazonSocialFocusLost(evt);
            }
        });

        txtNombreCliente.setFont(resourceMap.getFont("txtNombreCliente.font")); // NOI18N
        txtNombreCliente.setText(resourceMap.getString("txtNombreCliente.text")); // NOI18N
        txtNombreCliente.setName("txtNombreCliente"); // NOI18N
        txtNombreCliente.setPreferredSize(new java.awt.Dimension(6, 21));
        txtNombreCliente.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtNombreClienteFocusLost(evt);
            }
        });

        txtRfcCliente.setFont(resourceMap.getFont("txtRfcCliente.font")); // NOI18N
        txtRfcCliente.setText(resourceMap.getString("txtRfcCliente.text")); // NOI18N
        txtRfcCliente.setName("txtRfcCliente"); // NOI18N
        txtRfcCliente.setPreferredSize(new java.awt.Dimension(6, 21));
        txtRfcCliente.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtRfcClienteFocusLost(evt);
            }
        });

        txtDireccionCliente.setFont(resourceMap.getFont("txtDireccionCliente.font")); // NOI18N
        txtDireccionCliente.setText(resourceMap.getString("txtDireccionCliente.text")); // NOI18N
        txtDireccionCliente.setName("txtDireccionCliente"); // NOI18N
        txtDireccionCliente.setPreferredSize(new java.awt.Dimension(6, 21));
        txtDireccionCliente.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtDireccionClienteFocusLost(evt);
            }
        });

        txtNumIntCte.setFont(resourceMap.getFont("txtNumIntCte.font")); // NOI18N
        txtNumIntCte.setText(resourceMap.getString("txtNumIntCte.text")); // NOI18N
        txtNumIntCte.setName("txtNumIntCte"); // NOI18N
        txtNumIntCte.setPreferredSize(new java.awt.Dimension(6, 21));
        txtNumIntCte.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtNumIntCteFocusLost(evt);
            }
        });

        txtNumExtCte.setFont(resourceMap.getFont("txtNumExtCte.font")); // NOI18N
        txtNumExtCte.setText(resourceMap.getString("txtNumExtCte.text")); // NOI18N
        txtNumExtCte.setName("txtNumExtCte"); // NOI18N
        txtNumExtCte.setPreferredSize(new java.awt.Dimension(6, 21));
        txtNumExtCte.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtNumExtCteFocusLost(evt);
            }
        });

        txtCpCliente.setFont(resourceMap.getFont("txtCpCliente.font")); // NOI18N
        txtCpCliente.setText(resourceMap.getString("txtCpCliente.text")); // NOI18N
        txtCpCliente.setName("txtCpCliente"); // NOI18N
        txtCpCliente.setPreferredSize(new java.awt.Dimension(6, 21));
        txtCpCliente.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtCpClienteFocusLost(evt);
            }
        });

        txtCorreoCliente.setFont(resourceMap.getFont("txtCorreoCliente.font")); // NOI18N
        txtCorreoCliente.setText(resourceMap.getString("txtCorreoCliente.text")); // NOI18N
        txtCorreoCliente.setName("txtCorreoCliente"); // NOI18N
        txtCorreoCliente.setPreferredSize(new java.awt.Dimension(6, 21));
        txtCorreoCliente.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtCorreoClienteFocusLost(evt);
            }
        });

        txtLimiteCreditoCliente.setFont(resourceMap.getFont("txtLimiteCreditoCliente.font")); // NOI18N
        txtLimiteCreditoCliente.setText(resourceMap.getString("txtLimiteCreditoCliente.text")); // NOI18N
        txtLimiteCreditoCliente.setName("txtLimiteCreditoCliente"); // NOI18N
        txtLimiteCreditoCliente.setPreferredSize(new java.awt.Dimension(6, 21));

        txtDiasCreditoCliente.setFont(resourceMap.getFont("txtDiasCreditoCliente.font")); // NOI18N
        txtDiasCreditoCliente.setText(resourceMap.getString("txtDiasCreditoCliente.text")); // NOI18N
        txtDiasCreditoCliente.setName("txtDiasCreditoCliente"); // NOI18N
        txtDiasCreditoCliente.setPreferredSize(new java.awt.Dimension(6, 21));

        fechaVencCliente.setName("fechaVencCliente"); // NOI18N
        fechaVencCliente.setPreferredSize(new java.awt.Dimension(113, 21));

        jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        jcbTipoPrecio.setName("jcbTipoPrecio"); // NOI18N

        javax.swing.GroupLayout jpnClienteLayout = new javax.swing.GroupLayout(jpnCliente);
        jpnCliente.setLayout(jpnClienteLayout);
        jpnClienteLayout.setHorizontalGroup(
            jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpnClienteLayout.createSequentialGroup()
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jpnClienteLayout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(jpnClienteLayout.createSequentialGroup()
                                    .addGap(6, 6, 6)
                                    .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                        .addComponent(lblDireccionCliente)
                                        .addComponent(lblRfcCliente)
                                        .addComponent(lblNombreCliente)
                                        .addComponent(lblCodigoCliente)
                                        .addComponent(lblRazonSocialCliente)
                                        .addComponent(lblNumIntCte)
                                        .addComponent(lblCorreoCliente)))
                                .addComponent(lblLimiteCreditoCliente))
                            .addComponent(lblVenceCreditoCliente)
                            .addComponent(lblEstadoCliente)
                            .addComponent(lblCiudadCliente))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jpnClienteLayout.createSequentialGroup()
                                .addComponent(txtRfcCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 123, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(11, 11, 11)
                                .addComponent(jLabel18))
                            .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                .addGroup(jpnClienteLayout.createSequentialGroup()
                                    .addGap(388, 388, 388)
                                    .addComponent(jLabel21, javax.swing.GroupLayout.PREFERRED_SIZE, 6, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jpnClienteLayout.createSequentialGroup()
                                    .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                        .addComponent(txtDireccionCliente, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(txtNombreCliente, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(txtRazonSocial, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 376, Short.MAX_VALUE)
                                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jpnClienteLayout.createSequentialGroup()
                                            .addComponent(txtCodigoCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(jLabel25, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(jLabel1)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(jcbTipoPrecio, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                        .addComponent(jLabel20, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(jLabel19, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
                            .addGroup(jpnClienteLayout.createSequentialGroup()
                                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jpnClienteLayout.createSequentialGroup()
                                        .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                            .addComponent(txtLimiteCreditoCliente, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                            .addComponent(fechaVencCliente, javax.swing.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(lblDiasCreditoCliente, javax.swing.GroupLayout.Alignment.TRAILING)
                                            .addComponent(lblSaldoCliente, javax.swing.GroupLayout.Alignment.TRAILING))
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                            .addComponent(txtDiasCreditoCliente, javax.swing.GroupLayout.DEFAULT_SIZE, 100, Short.MAX_VALUE)
                                            .addComponent(txtSaldoCliente)))
                                    .addComponent(txtCorreoCliente, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGroup(jpnClienteLayout.createSequentialGroup()
                                            .addComponent(jcbCiudadCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(jLabel26)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(lblColoniaCliente)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(jcbColoniaCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 137, javax.swing.GroupLayout.PREFERRED_SIZE))
                                        .addGroup(jpnClienteLayout.createSequentialGroup()
                                            .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                                .addComponent(jcbEstadoCliente, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(txtNumIntCte, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE))
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                                .addGroup(jpnClienteLayout.createSequentialGroup()
                                                    .addGap(36, 36, 36)
                                                    .addComponent(lblNumExtCte))
                                                .addGroup(jpnClienteLayout.createSequentialGroup()
                                                    .addComponent(jLabel27)
                                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                    .addComponent(lblCpCliente)))
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                                .addComponent(txtCpCliente, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                                .addComponent(txtNumExtCte, javax.swing.GroupLayout.DEFAULT_SIZE, 98, Short.MAX_VALUE))
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                                .addComponent(jLabel22)
                                                .addComponent(jLabel24)))))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jLabel28))))
                    .addComponent(lblDatosCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 548, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(0, Short.MAX_VALUE))
        );
        jpnClienteLayout.setVerticalGroup(
            jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpnClienteLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lblDatosCliente)
                .addGap(27, 27, 27)
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblCodigoCliente)
                    .addComponent(txtCodigoCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel25)
                    .addComponent(jLabel1)
                    .addComponent(jcbTipoPrecio, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblRazonSocialCliente)
                    .addComponent(txtRazonSocial, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel19))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblNombreCliente)
                    .addComponent(txtNombreCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel20))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel18)
                    .addComponent(lblRfcCliente)
                    .addComponent(txtRfcCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblDireccionCliente)
                    .addComponent(txtDireccionCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel21))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(lblNumIntCte)
                    .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(txtNumIntCte, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(txtNumExtCte, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(lblNumExtCte)
                        .addComponent(jLabel22)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jpnClienteLayout.createSequentialGroup()
                        .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(lblCpCliente)
                            .addComponent(txtCpCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel24))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jcbCiudadCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(lblCiudadCliente)
                            .addComponent(jLabel26)
                            .addComponent(lblColoniaCliente)
                            .addComponent(jcbColoniaCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel28)))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jpnClienteLayout.createSequentialGroup()
                        .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(lblEstadoCliente)
                            .addComponent(jcbEstadoCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(jLabel27))
                        .addGap(33, 33, 33)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblCorreoCliente)
                    .addComponent(txtCorreoCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblLimiteCreditoCliente)
                    .addComponent(txtLimiteCreditoCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(lblDiasCreditoCliente)
                    .addComponent(txtDiasCreditoCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(9, 9, 9)
                .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jpnClienteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(lblVenceCreditoCliente)
                        .addComponent(lblSaldoCliente)
                        .addComponent(txtSaldoCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(fechaVencCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jtpCliente.addTab(resourceMap.getString("jpnCliente.TabConstraints.tabTitle"), jpnCliente); // NOI18N

        jPanel2.setName("jPanel2"); // NOI18N

        lblTelefonoCliente2.setBackground(resourceMap.getColor("lblTelefonoCliente2.background")); // NOI18N
        lblTelefonoCliente2.setFont(resourceMap.getFont("lblTelefonoCliente2.font")); // NOI18N
        lblTelefonoCliente2.setForeground(resourceMap.getColor("lblTelefonoCliente2.foreground")); // NOI18N
        lblTelefonoCliente2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblTelefonoCliente2.setText(resourceMap.getString("lblTelefonoCliente2.text")); // NOI18N
        lblTelefonoCliente2.setName("lblTelefonoCliente2"); // NOI18N
        lblTelefonoCliente2.setOpaque(true);

        btnAgregarTCliente1.setFont(resourceMap.getFont("btnAgregarTCliente1.font")); // NOI18N
        btnAgregarTCliente1.setIcon(resourceMap.getIcon("btnAgregarTCliente1.icon")); // NOI18N
        btnAgregarTCliente1.setToolTipText(resourceMap.getString("btnAgregarTCliente1.toolTipText")); // NOI18N
        btnAgregarTCliente1.setBorderPainted(false);
        btnAgregarTCliente1.setContentAreaFilled(false);
        btnAgregarTCliente1.setName("btnAgregarTCliente1"); // NOI18N
        btnAgregarTCliente1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnAgregarTCliente1ActionPerformed(evt);
            }
        });

        btnEliminarTCliente1.setFont(resourceMap.getFont("btnEliminarTCliente1.font")); // NOI18N
        btnEliminarTCliente1.setIcon(resourceMap.getIcon("btnEliminarTCliente1.icon")); // NOI18N
        btnEliminarTCliente1.setToolTipText(resourceMap.getString("btnEliminarTCliente1.toolTipText")); // NOI18N
        btnEliminarTCliente1.setBorderPainted(false);
        btnEliminarTCliente1.setContentAreaFilled(false);
        btnEliminarTCliente1.setName("btnEliminarTCliente1"); // NOI18N
        btnEliminarTCliente1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarTCliente1ActionPerformed(evt);
            }
        });

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        tblTelefonoCliente.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        tblTelefonoCliente.setName("tblTelefonoCliente"); // NOI18N
        tblTelefonoCliente.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tblTelefonoClienteMouseClicked(evt);
            }
        });
        jScrollPane2.setViewportView(tblTelefonoCliente);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 524, Short.MAX_VALUE)
                    .addComponent(lblTelefonoCliente2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 524, Short.MAX_VALUE)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(btnAgregarTCliente1, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnEliminarTCliente1, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lblTelefonoCliente2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 278, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnAgregarTCliente1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(btnEliminarTCliente1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );

        jtpCliente.addTab(resourceMap.getString("jPanel2.TabConstraints.tabTitle"), jPanel2); // NOI18N

        jtbAltadeCliente.setFloatable(false);
        jtbAltadeCliente.setRollover(true);
        jtbAltadeCliente.setEnabled(false);
        jtbAltadeCliente.setName("jtbAltadeCliente"); // NOI18N

        btnGuardarCliente.setBackground(resourceMap.getColor("btnGuardarCliente.background")); // NOI18N
        btnGuardarCliente.setFont(resourceMap.getFont("btnGuardarCliente.font")); // NOI18N
        btnGuardarCliente.setForeground(resourceMap.getColor("btnGuardarCliente.foreground")); // NOI18N
        btnGuardarCliente.setIcon(resourceMap.getIcon("btnGuardarCliente.icon")); // NOI18N
        btnGuardarCliente.setText(resourceMap.getString("btnGuardarCliente.text")); // NOI18N
        btnGuardarCliente.setToolTipText(resourceMap.getString("btnGuardarCliente.toolTipText")); // NOI18N
        btnGuardarCliente.setBorderPainted(false);
        btnGuardarCliente.setContentAreaFilled(false);
        btnGuardarCliente.setDefaultCapable(false);
        btnGuardarCliente.setFocusable(false);
        btnGuardarCliente.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnGuardarCliente.setName("btnGuardarCliente"); // NOI18N
        btnGuardarCliente.setPreferredSize(new java.awt.Dimension(28, 34));
        btnGuardarCliente.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnGuardarCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarClienteActionPerformed(evt);
            }
        });
        jtbAltadeCliente.add(btnGuardarCliente);

        btnCerrarCliente.setBackground(resourceMap.getColor("btnCerrarCliente.background")); // NOI18N
        btnCerrarCliente.setIcon(resourceMap.getIcon("btnCerrarCliente.icon")); // NOI18N
        btnCerrarCliente.setText(resourceMap.getString("btnCerrarCliente.text")); // NOI18N
        btnCerrarCliente.setToolTipText(resourceMap.getString("btnCerrarCliente.toolTipText")); // NOI18N
        btnCerrarCliente.setBorderPainted(false);
        btnCerrarCliente.setContentAreaFilled(false);
        btnCerrarCliente.setFocusable(false);
        btnCerrarCliente.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        btnCerrarCliente.setName("btnCerrarCliente"); // NOI18N
        btnCerrarCliente.setPreferredSize(new java.awt.Dimension(28, 34));
        btnCerrarCliente.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnCerrarCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCerrarClienteActionPerformed(evt);
            }
        });
        jtbAltadeCliente.add(btnCerrarCliente);

        jLabel2.setIcon(resourceMap.getIcon("jLabel2.icon")); // NOI18N
        jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
        jLabel2.setName("jLabel2"); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jtpCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 556, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
            .addComponent(jtbAltadeCliente, javax.swing.GroupLayout.DEFAULT_SIZE, 580, Short.MAX_VALUE)
            .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 580, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jLabel2)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 8, Short.MAX_VALUE)
                .addComponent(jtbAltadeCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(12, 12, 12)
                .addComponent(jtpCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 398, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        jtpCliente.getAccessibleContext().setAccessibleName(resourceMap.getString("jTabbedPane1.AccessibleContext.accessibleName")); // NOI18N

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnCerrarClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCerrarClienteActionPerformed
        // TODO add your handling code here:
        //Cerramos la ventana Alta de Clientes
        this.setVisible(false);
    }//GEN-LAST:event_btnCerrarClienteActionPerformed

    // Validamos si un Dato es Numerico
    private static boolean isNumeric(String cadena){
        // Intentamos Parsea de String a Numero
        try {
            // Validamos si es Numerico
            Double.parseDouble(cadena);
            return true;
        } catch (NumberFormatException e) {
            // No es Numerico
            return false;
        }
    }
    
    private void btnGuardarClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGuardarClienteActionPerformed
        // TODO add your handling code here:
        // Variables Locales
        ClienteBean sqlBean=new ClienteBean();
        ClienteBean sqlBeanIdCliente=new ClienteBean();
        EntidadBean sqlBeanIdEntidad=new EntidadBean();
        TelefonoBean sqlBeanTelefono=new TelefonoBean();
        Vector datosEntidad=new Vector();
        Vector datosCliente=new Vector();
        Vector datoIdCliente=new Vector();
        Vector datosIdEntidad=new Vector();
        Vector datosTelefono=new Vector();
        Vector existenciaTel=new Vector();
        int tipoTelefono=0;
        int idEntidad=0;
        int idControl=0;

        // Validamos el Tipo de Accion a Realizar
        switch(this.tipoAccion){
            // Alta de Cliente
            case 1:
                // Obtenemos el Identificador a Asignar (Telefonos)
                datoIdCliente=(new ClienteBLogic()).getIdCliente(sqlBeanIdCliente);
                // Vaciamos los Datos
                sqlBeanIdCliente=(ClienteBean) datoIdCliente.elementAt(0);
                idControl=Integer.parseInt(sqlBeanIdCliente.getIdCliente());

                // Validacion de Campos
                if (txtCodigoCliente.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Codigo del Cliente","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtRazonSocial.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture la Razon Social","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtNombreCliente.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Nombre del Cliente","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtRfcCliente.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el RFC","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtDireccionCliente.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture la Direccion","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtNumExtCte.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Numero Exterior");
                }else if (jcbEstadoCliente.getSelectedIndex()<0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione el Estado","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtCpCliente.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Codigo Postal","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbCiudadCliente.getSelectedIndex()<0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione la Ciudad","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbColoniaCliente.getSelectedIndex()<0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione la Colonia","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else{
                    // Guarda el Registro del Cliente
                    // Obtenemos el Id de Entidad
                    // Seteamos los Datos
                    sqlBeanIdEntidad.setDescEstado(jcbEstadoCliente.getSelectedItem().toString());
                    sqlBeanIdEntidad.setDescCiudad(jcbCiudadCliente.getSelectedItem().toString());
                    sqlBeanIdEntidad.setDescAsentamiento(jcbColoniaCliente.getSelectedItem().toString());
                    datosEntidad=(new EntidadBLogic()).getIdEntidad(sqlBeanIdEntidad);
                    sqlBeanIdEntidad=(EntidadBean) datosEntidad.elementAt(0);
                    idEntidad=Integer.parseInt(sqlBeanIdEntidad.getIdEntidad());

                    // Seteamos los Datos
                    sqlBean.setCodigoCliente(txtCodigoCliente.getText());
                    sqlBean.setRazonSocial(txtRazonSocial.getText());
                    sqlBean.setNombreCliente(txtNombreCliente.getText());
                    sqlBean.setRfc(txtRfcCliente.getText());
                    sqlBean.setDireccion(txtDireccionCliente.getText());
                    sqlBean.setNoInt(txtNumIntCte.getText());
                    sqlBean.setNoExt(txtNumExtCte.getText());
                    sqlBean.setCodigoPostal(txtCpCliente.getText());
                    sqlBean.setIdEntidad(Integer.toString(idEntidad));
                    sqlBean.setEmail(txtCorreoCliente.getText());
                    sqlBean.setLimiteCredito(txtLimiteCreditoCliente.getText());
                    sqlBean.setDiasCredito(txtDiasCreditoCliente.getText());
                    // Evaluamos Dias de Credito
                    if (!txtDiasCreditoCliente.getText().equalsIgnoreCase("")){
                        // Vaciamos los Dias de Credito
                        sqlBean.setDiasCredito(txtDiasCreditoCliente.getText());
                    }else{
                        // Vaciamos el Valor por Default
                        sqlBean.setDiasCredito("0");
                    }
                    // Evaluamos Limite de Credito
                    if (!txtLimiteCreditoCliente.getText().equalsIgnoreCase("")){
                        // Vaciamos el Limite de Credito
                        sqlBean.setLimiteCredito(txtLimiteCreditoCliente.getText());
                    }else{
                        // Vaciamos el Valor por Default
                        sqlBean.setLimiteCredito("0");
                    }
                    // Obtenemos la Fecha
                    try{
                        Date fechaVen=fechaVencCliente.getDate();
                        // Damos Formato a la Fecha
                        SimpleDateFormat formato=new SimpleDateFormat("yyyy-MM-dd");
                        // Vaciamos la Fecha
                        String fechaVencimiento=formato.format(fechaVen);
                        // Vaciamos la Fecha de Vencimiento
                        sqlBean.setFechaVencimiento(fechaVencimiento);
                    }catch(Exception e){
                        // Vaciamos la Fecha de Vencimiento
                        sqlBean.setFechaVencimiento("1900-01-01 12:00:00");
                    }
                    // Insertamos el Registro
                    datosCliente=(new ClienteBLogic()).execute(sqlBean);

                    // Guardamos el o los Telefonos del Cliente
                    // Evaluamos si Existen Telefonos a Guardar
                    if (modelTelefonos.getRowCount()>0){
                        // Almacenamos los Telefonos
                        // Ciclo FOR
                        for (int i=0;i<modelTelefonos.getRowCount();i++){
                            TelefonoBean sqlBeanTelefonos=new TelefonoBean();
                            // Obtenemos el Tipo de Telefono
                            // Ciclo For
                            for (int a=0;a<telefonos.cmbTipoTelefonoCliente.getItemCount();a++){
                                if (modelTelefonos.getValueAt(i, 0).toString().equalsIgnoreCase(telefonos.cmbTipoTelefonoCliente.getItemAt(a).toString())){
                                    // Vaciamos el Tipo de Telefono
                                    tipoTelefono=a;
                                    // Salimos del Ciclo
                                    a=telefonos.cmbTipoTelefonoCliente.getItemCount();
                                }
                            }

                            // Seteamos los Datos
                            sqlBeanTelefonos.setIdControl(Integer.toString(idControl));
                            sqlBeanTelefonos.setIdTipoPersona("2");
                            sqlBeanTelefonos.setIdTipoTelefono(Integer.toString(tipoTelefono));
                            sqlBeanTelefonos.setTelefono(modelTelefonos.getValueAt(i, 1).toString());
                            sqlBeanTelefonos.setExtension(modelTelefonos.getValueAt(i, 2).toString());
                            datosTelefono=(new TelefonoBLogic()).insertaDatosTelefono(sqlBeanTelefonos);
                        }

                        // Evaluamos Respuesta Registro Telefonos
                        if (!datosTelefono.elementAt(0).equals("OK")){
                            // Mensaje al Usuario
                            JOptionPane.showMessageDialog(null,"Ocurrio un Problema al Registrar los Telefonos del Cliente","Validacion",JOptionPane.ERROR_MESSAGE);
                        }
                    }

                    // Evaluamos el Resultado
                    if (datosCliente.elementAt(0).equals("OK")){
                        // Mensaje al Usuario
                        JOptionPane.showMessageDialog(null,"Cliente Registrado Satisfactoriamente","Registro",JOptionPane.INFORMATION_MESSAGE);
                        // Desactivacion de Campos
                        txtCodigoCliente.setEnabled(false);
                        txtRazonSocial.setEnabled(false);
                        txtNombreCliente.setEnabled(false);
                        txtRfcCliente.setEnabled(false);
                        txtDireccionCliente.setEnabled(false);
                        txtNumIntCte.setEnabled(false);
                        txtNumExtCte.setEnabled(false);
                        jcbEstadoCliente.setEnabled(false);
                        txtCpCliente.setEnabled(false);
                        jcbCiudadCliente.setEnabled(false);
                        jcbColoniaCliente.setEnabled(false);
                        txtCorreoCliente.setEnabled(false);
                        txtLimiteCreditoCliente.setEnabled(false);
                        txtDiasCreditoCliente.setEnabled(false);
                        fechaVencCliente.setEnabled(false);
                    }else{
                        // Mensaje al Usuario
                        JOptionPane.showMessageDialog(null,"Ocurrio un Problema al Momento de Registrar al Cliente","Registro",JOptionPane.INFORMATION_MESSAGE);
                    }
                }
                break;

            // Modificar Cliente
            case 2:
                // Validacion de Campos
                if (txtCodigoCliente.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Codigo del Cliente","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtRazonSocial.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture la Razon Social","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtNombreCliente.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Nombre del Cliente","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtRfcCliente.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el RFC","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtDireccionCliente.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture la Direccion","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtNumExtCte.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Numero Exteriro");
                }else if (jcbEstadoCliente.getSelectedIndex()<0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione el Estado","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (txtCpCliente.getText().equalsIgnoreCase("")){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Capture el Codigo Postal","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbCiudadCliente.getSelectedIndex()<0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione la Ciudad","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else if (jcbColoniaCliente.getSelectedIndex()<0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione la Colonia","Validacion de Campos",JOptionPane.ERROR_MESSAGE);
                }else{
                    // Actualizamos los Datos del Cliente
                    // Obtenemos el Id de Entidad
                    // Seteamos los Datos
                    sqlBean.setIdCliente(idCliente);
                    sqlBeanIdEntidad.setDescEstado(jcbEstadoCliente.getSelectedItem().toString());
                    sqlBeanIdEntidad.setDescCiudad(jcbCiudadCliente.getSelectedItem().toString());
                    sqlBeanIdEntidad.setDescAsentamiento(jcbColoniaCliente.getSelectedItem().toString());
                    datosIdEntidad=(new EntidadBLogic()).getIdEntidad(sqlBeanIdEntidad);
                    sqlBeanIdEntidad=(EntidadBean) datosIdEntidad.elementAt(0);
                    idEntidad=Integer.parseInt(sqlBeanIdEntidad.getIdEntidad());

                    // Seteamos los Datos
                    sqlBean.setCodigoCliente(txtCodigoCliente.getText());
                    sqlBean.setRazonSocial(txtRazonSocial.getText());
                    sqlBean.setNombreCliente(txtNombreCliente.getText());
                    sqlBean.setRfc(txtRfcCliente.getText());
                    sqlBean.setDireccion(txtDireccionCliente.getText());
                    sqlBean.setNoInt(txtNumIntCte.getText());
                    sqlBean.setNoExt(txtNumExtCte.getText());
                    sqlBean.setCodigoPostal(txtCpCliente.getText());
                    sqlBean.setEmail(txtCorreoCliente.getText());
                    sqlBean.setIdEntidad(Integer.toString(idEntidad));
                    // Evaluamos Dias de Credito
                    if (!txtDiasCreditoCliente.getText().equalsIgnoreCase("")){
                        // Vaciamos los Dias de Credito
                        sqlBean.setDiasCredito(txtDiasCreditoCliente.getText());
                    }else{
                        // Vaciamos el Valor por Default
                        sqlBean.setDiasCredito("0");
                    }
                    // Evaluamos Limite de Credito
                    if (!txtLimiteCreditoCliente.getText().equalsIgnoreCase("")){
                        // Vaciamos el Limite de Credito
                        sqlBean.setLimiteCredito(txtLimiteCreditoCliente.getText());
                    }else{
                        // Vaciamos el Valor por Default
                        sqlBean.setLimiteCredito("0");
                    }
                    // Obtenemos la Fecha
                    try {
                        Date fechaVenc=fechaVencCliente.getDate();
                        // Damos Formato a la Fecha
                        SimpleDateFormat formato=new SimpleDateFormat("yyyy-MM-dd");
                        // Vaciamos la Fecha
                        String fechaVencimiento=formato.format(fechaVenc);
                        // Vaciamos la Fecha de Vencimiento
                        sqlBean.setFechaVencimiento(fechaVencimiento);
                    } catch (Exception e) {
                        // Vaciamos la Fecha de Vencimiento
                        sqlBean.setFechaVencimiento("1900-01-01 12:00:00");
                    }
                    // Actualizamos el Registro
                    datosCliente=(new ClienteBLogic()).updateDatosCliente(sqlBean);

                    // Guardamos o Actualizamos Telefono(s) del Cliente
                    // Evaluamos si existen Telefonos a Actualizar o Guardar
                    if (modelTelefonos.getRowCount()>0){
                        // Ciclo FOR
                        for (int i=0;i<modelTelefonos.getRowCount();i++){
                            // Comprobamos si el Telefono Existe
                            // Seteamos los Datos
                            sqlBeanTelefono.setIdTipoPersona("2");
                            sqlBeanTelefono.setIdControl(idCliente);
                            sqlBeanTelefono.setTelefono(modelTelefonos.getValueAt(i, 1).toString());
                            // Realizamos la consulta
                            existenciaTel=(new TelefonoBLogic()).getExistenciaTelefono(sqlBeanTelefono);

                            // Evaluamos si el Telefono Existe
                            if (existenciaTel.isEmpty()){
                                // Insertamos el Telefono
                                // Instanciamos la Clase de Telefonos
                                telefonos=new frmRegistrarTelefono(2);
                                // Obtenemos el Tipo de Telefono
                                // Ciclo For
                                for (int a=0;a<telefonos.cmbTipoTelefonoCliente.getItemCount();a++){
                                    if (modelTelefonos.getValueAt(i, 0).toString().equalsIgnoreCase(telefonos.cmbTipoTelefonoCliente.getItemAt(a).toString())){
                                        // Vaciamos el Tipo de Telefono
                                        tipoTelefono=a;
                                        // Salimos del Ciclo
                                        a=telefonos.cmbTipoTelefonoCliente.getItemCount();
                                    }
                                }

                                // Seteamos los Datos
                                sqlBeanTelefono.setIdControl(idCliente);
                                sqlBeanTelefono.setIdTipoPersona("2");
                                sqlBeanTelefono.setIdTipoTelefono(Integer.toString(tipoTelefono));
                                sqlBeanTelefono.setTelefono(modelTelefonos.getValueAt(i, 1).toString());
                                sqlBeanTelefono.setExtension(modelTelefonos.getValueAt(i, 2).toString());
                                (new TelefonoBLogic()).insertaDatosTelefono(sqlBeanTelefono);
                            }else{
                                // Actualizamos el Telefono
                                // Instanciamos la Clase de Telefonos
                                telefonos=new frmRegistrarTelefono(2);
                                // Obtenemos el Tipo de Telefono
                                // Ciclo For
                                for (int a=0;a<telefonos.cmbTipoTelefonoCliente.getItemCount();a++){
                                    if (modelTelefonos.getValueAt(i, 0).toString().equalsIgnoreCase(telefonos.cmbTipoTelefonoCliente.getItemAt(a).toString())){
                                        // Vaciamos el Tipo de Telefono
                                        tipoTelefono=a;
                                        // Salimos del Ciclo
                                        a=telefonos.cmbTipoTelefonoCliente.getItemCount();
                                    }
                                }

                                // Seteamos los Datos
                                sqlBeanTelefono.setIdControl(idCliente);
                                sqlBeanTelefono.setIdTipoPersona("2");
                                sqlBeanTelefono.setIdTipoTelefono(Integer.toString(tipoTelefono));
                                sqlBeanTelefono.setTelefono(modelTelefonos.getValueAt(i, 1).toString());
                                sqlBeanTelefono.setExtension(modelTelefonos.getValueAt(i, 2).toString());
                                sqlBeanTelefono.setIdTelefono(modelTelefonos.getValueAt(i, 3).toString());
                                (new TelefonoBLogic()).actualizaDatosTelefono(sqlBeanTelefono);
                            }
                        }
                    }

                    // Evaluamos el Resultado
                    if (datosCliente.elementAt(0).equals("OK")){
                        // Mensaje al Usuario
                        JOptionPane.showMessageDialog(null,"Cliente Actualizado Satisfactoriamente","Modificación",JOptionPane.INFORMATION_MESSAGE);
                        // Desactivacion de Campos
                        txtCodigoCliente.setEnabled(false);
                        txtRazonSocial.setEnabled(false);
                        txtNombreCliente.setEnabled(false);
                        txtRfcCliente.setEnabled(false);
                        txtDireccionCliente.setEnabled(false);
                        txtNumIntCte.setEnabled(false);
                        txtNumExtCte.setEnabled(false);
                        jcbEstadoCliente.setEnabled(false);
                        jcbCiudadCliente.setEnabled(false);
                        jcbColoniaCliente.setEnabled(false);
                        txtCpCliente.setEnabled(false);
                        txtCorreoCliente.setEnabled(false);
                        txtLimiteCreditoCliente.setEnabled(false);
                        txtDiasCreditoCliente.setEnabled(false);
                        fechaVencCliente.setEnabled(false);
                        // Desactivacion de Botones
                        btnGuardarCliente.setEnabled(false);
                        btnAgregarTCliente1.setEnabled(false);
                        btnEliminarTCliente1.setEnabled(false);
                    }else{
                        // Mensaje al Usuario
                        JOptionPane.showMessageDialog(null,"Ocurrio un Problema al Momento de Actualizar al Cliente","Modificación",JOptionPane.ERROR_MESSAGE);
                    }
                }
                break;
        }
    }//GEN-LAST:event_btnGuardarClienteActionPerformed

    private void btnEliminarTCliente1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarTCliente1ActionPerformed
        // TODO add your handling code here:
        // Variables Locales
        TelefonoBean sqlBeanTelefono=new TelefonoBean();

        // Eliminamos el Registro de la Tabla de Telefonos
        if (telefonoSel!=-1){
            // Mensaje al Usuario
            int confElim=JOptionPane.showConfirmDialog(null,"¿Eliminar el telefono seleccionado?","Eliminar telefono",JOptionPane.YES_NO_OPTION);
            // Evaluamos Respuesta
            if (JOptionPane.OK_OPTION==confElim){
                // Eliminamos el Telefonos Seleccionado
                modelTelefonos.removeRow(telefonoSel);
                // eliminamos el Registro en BD (Logicamente)
                // Seteamos los Datos
                sqlBeanTelefono.setIdTelefono(idTelefono);
                sqlBeanTelefono.setIdTipoPersona("2");
                (new TelefonoBLogic()).eliminaDatosTelefono(sqlBeanTelefono);
                // Reseteamos la Variable de Seleccion
                telefonoSel=-1;
            }
        }else{
            // Mensaje al Usuario
            JOptionPane.showMessageDialog(null,"Seleccione el Telefono a Eliminar","Validacion",JOptionPane.WARNING_MESSAGE);
        }
}//GEN-LAST:event_btnEliminarTCliente1ActionPerformed

    private void btnAgregarTCliente1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAgregarTCliente1ActionPerformed
        // TODO add your handling code here:
        // Cargamos el Formulario de Telefonos
        telefonos=new frmRegistrarTelefono(2);
        telefonos.btnGuardarTelefonoCliente.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent ae) {
                // Validacion de Campos
                if (telefonos.cmbTipoTelefonoCliente.getSelectedIndex()==0){
                    // Mensaje al Usuario
                    JOptionPane.showMessageDialog(null,"Seleccione el Tipo de Telefono","Validacion",JOptionPane.WARNING_MESSAGE);
                }else{
                    // Validamos el Tipo de Telefono Seleccionado (Oficina)
                    if (telefonos.cmbTipoTelefonoCliente.getSelectedItem().toString().equalsIgnoreCase("OFICINA")){
                        // Validacion de Campos + Extension
                        if (telefonos.txtTelefonoCliente.getText().equalsIgnoreCase("")){
                            // Mensaje al Usuario
                            JOptionPane.showMessageDialog(null,"Capture el Numero Telefonico","Validacion",JOptionPane.WARNING_MESSAGE);
                        }else if (!isNumeric(telefonos.txtTelefonoCliente.getText())){
                            // Mensaje al Usuario
                            JOptionPane.showMessageDialog(null,"El Telefono debe ser Numerico","Validacion",JOptionPane.WARNING_MESSAGE);
                        }else{
                            // Almacenamos los Datos del Telefono
                            modelTelefonos.addRow(new Object[]{telefonos.cmbTipoTelefonoCliente.getSelectedItem().toString(),telefonos.txtTelefonoCliente.getText(),telefonos.txtExtencion.getText(),modelTelefonos.getRowCount()});
                            // Mensaje al Usuario
                            JOptionPane.showMessageDialog(null,"Telefono Agregado Satisfactoriamente","Validacion",JOptionPane.INFORMATION_MESSAGE);
                            // Cerramos la Ventana de Alta de Telefonos
                            telefonos.setVisible(false);
                        }
                    }else{
                        if (telefonos.txtTelefonoCliente.getText().equalsIgnoreCase("")){
                            // Mensaje al Usuario
                            JOptionPane.showMessageDialog(null,"Capture el Numero Telefonico","Validacion",JOptionPane.WARNING_MESSAGE);
                        }else if (!isNumeric(telefonos.txtTelefonoCliente.getText())){
                            // Mensaje al Usuario
                            JOptionPane.showMessageDialog(null,"El Telefono debe ser Numerico","Validacion",JOptionPane.WARNING_MESSAGE);
                        }else{
                            // Almacenamos los Datos del Telefono
                            modelTelefonos.addRow(new Object[]{telefonos.cmbTipoTelefonoCliente.getSelectedItem().toString(),telefonos.txtTelefonoCliente.getText(),"",modelTelefonos.getRowCount()});
                            // Mensaje al Usuario
                            JOptionPane.showMessageDialog(null,"Telefono Agregado Satisfactoriamente","Validacion",JOptionPane.INFORMATION_MESSAGE);
                            // Cerramos la Ventana de Alta de Telefono
                            telefonos.setVisible(false);
                        }
                    }
                }
            }
        });
        // Mostramos el Formulario
        telefonos.setVisible(true);
}//GEN-LAST:event_btnAgregarTCliente1ActionPerformed

    private void txtCorreoClienteFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtCorreoClienteFocusLost
        // TODO add your handling code here:
        txtCorreoCliente.setText(txtCorreoCliente.getText().toUpperCase());
}//GEN-LAST:event_txtCorreoClienteFocusLost

    private void txtCpClienteFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtCpClienteFocusLost
        // TODO add your handling code here:
        txtCpCliente.setText(txtCpCliente.getText().toUpperCase());
}//GEN-LAST:event_txtCpClienteFocusLost

    private void txtNumExtCteFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtNumExtCteFocusLost
        // TODO add your handling code here:
        txtNumExtCte.setText(txtNumExtCte.getText().toUpperCase());
}//GEN-LAST:event_txtNumExtCteFocusLost

    private void txtNumIntCteFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtNumIntCteFocusLost
        // TODO add your handling code here:
        txtNumIntCte.setText(txtNumIntCte.getText().toUpperCase());
}//GEN-LAST:event_txtNumIntCteFocusLost

    private void txtDireccionClienteFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtDireccionClienteFocusLost
        // TODO add your handling code here:
        txtDireccionCliente.setText(txtDireccionCliente.getText().toUpperCase());
}//GEN-LAST:event_txtDireccionClienteFocusLost

    private void txtRfcClienteFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtRfcClienteFocusLost
        // TODO add your handling code here:
        txtRfcCliente.setText(txtRfcCliente.getText().toUpperCase());
}//GEN-LAST:event_txtRfcClienteFocusLost

    private void txtNombreClienteFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtNombreClienteFocusLost
        // TODO add your handling code here:
        txtNombreCliente.setText(txtNombreCliente.getText().toUpperCase());
}//GEN-LAST:event_txtNombreClienteFocusLost

    private void txtRazonSocialFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtRazonSocialFocusLost
        // TODO add your handling code here:
        txtRazonSocial.setText(txtRazonSocial.getText().toUpperCase());
}//GEN-LAST:event_txtRazonSocialFocusLost

    private void txtCodigoClienteFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtCodigoClienteFocusLost
        // TODO add your handling code here:
        txtCodigoCliente.setText(txtCodigoCliente.getText().toUpperCase());
}//GEN-LAST:event_txtCodigoClienteFocusLost

    private void tblTelefonoClienteMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblTelefonoClienteMouseClicked
        // TODO add your handling code here:
        // Obtenemos la Posicion del Telefono Seleccionado
        telefonoSel=tblTelefonoCliente.getSelectedRow();
        idTelefono=modelTelefonos.getValueAt(telefonoSel,3).toString();
    }//GEN-LAST:event_tblTelefonoClienteMouseClicked

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnAgregarTCliente1;
    private javax.swing.JButton btnCerrarCliente;
    private javax.swing.JButton btnEliminarTCliente1;
    private javax.swing.JButton btnGuardarCliente;
    private com.toedter.calendar.JDateChooser fechaVencCliente;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel22;
    private javax.swing.JLabel jLabel24;
    private javax.swing.JLabel jLabel25;
    private javax.swing.JLabel jLabel26;
    private javax.swing.JLabel jLabel27;
    private javax.swing.JLabel jLabel28;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JComboBox jcbCiudadCliente;
    private javax.swing.JComboBox jcbColoniaCliente;
    private javax.swing.JComboBox jcbEstadoCliente;
    private javax.swing.JComboBox jcbTipoPrecio;
    private javax.swing.JPanel jpnCliente;
    private javax.swing.JToolBar jtbAltadeCliente;
    private javax.swing.JTabbedPane jtpCliente;
    private javax.swing.JLabel lblCiudadCliente;
    private javax.swing.JLabel lblCodigoCliente;
    private javax.swing.JLabel lblColoniaCliente;
    private javax.swing.JLabel lblCorreoCliente;
    private javax.swing.JLabel lblCpCliente;
    private javax.swing.JLabel lblDatosCliente;
    private javax.swing.JLabel lblDiasCreditoCliente;
    private javax.swing.JLabel lblDireccionCliente;
    private javax.swing.JLabel lblEstadoCliente;
    private javax.swing.JLabel lblLimiteCreditoCliente;
    private javax.swing.JLabel lblNombreCliente;
    private javax.swing.JLabel lblNumExtCte;
    private javax.swing.JLabel lblNumIntCte;
    private javax.swing.JLabel lblRazonSocialCliente;
    private javax.swing.JLabel lblRfcCliente;
    private javax.swing.JLabel lblSaldoCliente;
    private javax.swing.JLabel lblTelefonoCliente2;
    private javax.swing.JLabel lblVenceCreditoCliente;
    private javax.swing.JTable tblTelefonoCliente;
    private javax.swing.JTextField txtCodigoCliente;
    private javax.swing.JTextField txtCorreoCliente;
    private javax.swing.JTextField txtCpCliente;
    private javax.swing.JTextField txtDiasCreditoCliente;
    private javax.swing.JTextField txtDireccionCliente;
    private javax.swing.JTextField txtLimiteCreditoCliente;
    private javax.swing.JTextField txtNombreCliente;
    private javax.swing.JTextField txtNumExtCte;
    private javax.swing.JTextField txtNumIntCte;
    private javax.swing.JTextField txtRazonSocial;
    private javax.swing.JTextField txtRfcCliente;
    private javax.swing.JTextField txtSaldoCliente;
    // End of variables declaration//GEN-END:variables

}
